package main

import (
	"fmt"
)

type ErrNegativeSqrt float64

//貌似Error的优先级比String高
//func (e ErrNegativeSqrt) Error() string {
//	return fmt.Sprintf("cannot Sqrt negative number:%v", float64(e)) //直接使用e则导致死循环 ，fmt.Sprintf 在输出对象是会尝试调用Error和String方法

//}
func (e ErrNegativeSqrt) String() string {
	return fmt.Sprintf("%v this is a float64 type", float64(e))
}

/*func Sqrt(x float64) (float64, error) {
	if x < 0 {
		return 0, ErrNegativeSqrt(x) //在返回错误是会调用Error方法
	}
	return 0, nil
}*/

func main() {
	var number ErrNegativeSqrt = 2
	//fmt.Println(Sqrt(2))
	//fmt.Println(Sqrt(-2))
	fmt.Print(number)
}
